package xin.marcher.wind.migrate.domain;

import lombok.Data;
import xin.marcher.wind.migrate.domain.entity.EtlBinlogConsumeRecordDO;

import java.util.List;
import java.util.Map;
import java.util.StringJoiner;

/**
 * MySQL 的 binlog 对象
 */
@Data
public class BinlogData {

    /**
     * binlog 对应的表名
     */
    private String tableName;

    /**
     * 操作时间
     */
    private Long operateTime;

    /**
     * 操作类型
     */
    private String operateType;

    /**
     * data 节点转换成的 Map，key 对应的是 bean 里的属性名，value 一律为字符串（它和 datas 只会有一个有值）
     */
    private List<Map<String, Object>> dataMap;

    /**
     * data 节点转换成的 bean（它和 dataMap 只会有一个有值）
     */
    private List<Object> datas;

    /**
     * mq消息的信息
     */
    private EtlBinlogConsumeRecordDO consumeRecord;

    @Override
    public String toString() {
        return new StringJoiner(", ", BinlogData.class.getSimpleName() + "[", "]")
                .add("tableName=" + tableName)
                .add("operateTime=" + operateTime)
                .add("operateType='" + operateType + "'")
                .add("dataMap=" + dataMap)
                .add("datas=" + datas)
                .toString();
    }
}
